// 密钥
export const SECRET_KEY: string = 'chanwaichun';
// 过期时间
export const EXPIRES_IN: string = '24d';

// 白名单配置接口
export interface WhitelistRule {
  path: string;
  method?: string | string[]; // 限制HTTP方法，不指定则匹配所有方法
  matchType: 'exact' | 'prefix' | 'regex'; // 匹配类型
  description?: string; // 规则描述
}

// 白名单规则配置
export const WHITELIST_RULES: WhitelistRule[] = [
  // 用户认证相关
  {
    path: '/api/weixin/base/login',
    method: ['POST'],
    matchType: 'exact',
    description: '微信登录接口',
  },
  {
    path: '/api/user/login',
    method: ['POST'],
    matchType: 'exact',
    description: '用户登录接口',
  },
  {
    path: '/api/user/loginByDeviceId',
    method: ['POST'],
    matchType: 'exact',
    description: '设备ID登录接口',
  },
  {
    path: '/api/user/addOrUpdate',
    method: ['POST', 'PUT'],
    matchType: 'exact',
    description: '用户注册/更新接口',
  },

  // 第三方服务
  {
    path: '/api/thirdParty/chatMessage',
    matchType: 'exact',
    description: '第三方聊天消息接口',
  },
  {
    path: '/api/thirdParty/chat',
    matchType: 'exact',
    description: '第三方聊天接口',
  },

  // 公共资源
  {
    path: '/api/zitie/getZitieByLevel',
    method: ['GET'],
    matchType: 'exact',
    description: '获取字帖等级接口',
  },

  // 静态资源 - 使用前缀匹配
  {
    path: '/static/',
    matchType: 'prefix',
    description: '静态资源文件',
  },
  {
    path: '/videos/',
    matchType: 'prefix',
    description: '视频文件资源',
  },

  // 系统文件
  {
    path: '/favicon.ico',
    matchType: 'exact',
    description: '网站图标',
  },
];

// 向后兼容的简单白名单（废弃，建议使用WHITELIST_RULES）
export const WHITE_LIST: string[] = WHITELIST_RULES.filter(
  (rule) => rule.matchType === 'prefix' || rule.matchType === 'exact',
).map((rule) => rule.path);
